<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="Content-Language" content="zh-CN"><title>sysctl.d
  中文手册 [金步国]</title><style>
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1 { text-align:center; background:#ddd; }
h2#auth_name { text-align:center; margin: 10px 5%; }

    a.headerlink {
      color: #c60f0f;
      font-size: 0.8em;
      padding: 0 4px 0 4px;
      text-decoration: none;
      visibility: hidden;
    }

    a.headerlink:hover {
      background-color: #c60f0f;
      color: white;
    }

    h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, dt:hover > a.headerlink {
      visibility: visible;
    }
</style><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><h1>sysctl.d 中文手册</h1><h2 id="auth_name">译者：<strong><a href="http://www.jinbuguo.com/">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p><ul><li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li><li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li><li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li></ul><h3>其他作品</h3><p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p><ul><li><a href="http://www.jinbuguo.com/">金步国作品集</a> [ <a href="http://www.jinbuguo.com/">http://www.jinbuguo.com/</a> ]</li></ul><h3>联系方式</h3><p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p><ul><li>Email(QQ)：70171448在QQ邮箱</li></ul><hr><a href="systemd.index.html">手册索引</a> ·
  <a href="systemd.directives.html">指令索引</a><span style="float:right">systemd-241</span><hr><div class="refentry"><a name="sysctl.d"></a><div class="titlepage"></div><div class="refnamediv"><h2>名称</h2><p>sysctl.d — 在启动时配置内核参数</p></div><div class="refsynopsisdiv"><h2>大纲</h2><p><code class="filename">/etc/sysctl.d/*.conf</code></p><p><code class="filename">/run/sysctl.d/*.conf</code></p><p><code class="filename">/usr/lib/sysctl.d/*.conf</code></p></div><div class="refsect1"><a name="id-1.5"></a><h2 id="描述">描述<a class="headerlink" title="Permalink to this headline" href="sysctl.d.html#%E6%8F%8F%E8%BF%B0">¶</a></h2><p>在系统启动时，
    <a href="systemd-sysctl.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-sysctl.service</span>(8)</span></a>
    根据上面列出的配置文件设置
    <a class="ulink" href="http://www.jinbuguo.com/man/sysctl.html" target="_top">sysctl(8)</a>
    内核参数。</p></div><div class="refsect1"><a name="id-1.6"></a><h2 id="配置文件格式">配置文件格式<a class="headerlink" title="Permalink to this headline" href="sysctl.d.html#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%A0%BC%E5%BC%8F">¶</a></h2><p>配置文件的格式是
    一系列"KEY=VALUE"行(每行一对)。
    空行以及以 "<code class="literal">#</code>" 或
    "<code class="literal">;</code>" 开头的行都将被忽略。</p><p>注意，在KEY内部，可以使用 "<code class="literal">/</code>" 或
    "<code class="literal">.</code>" 作为分隔符。
    如果第一个分隔符是 "<code class="literal">/</code>" ，
    那么其余的分隔符将保持原样；
    如果第一个分隔符是 "<code class="literal">.</code>" ，那么互换所有的 "<code class="literal">/</code>" 与 "<code class="literal">.</code>" ；
    例如，"<code class="literal">kernel.domainname=foo</code>" 等价于
    "<code class="literal">kernel/domainname=foo</code>"  ，都会将
     "<code class="literal">foo</code>" 写入
    <code class="filename">/proc/sys/kernel/domainname</code> 参数中。
    同样的，"<code class="literal">net.ipv4.conf.enp3s0/200.forwarding</code>" 等价于
    "<code class="literal">net/ipv4/conf/enp3s0.200/forwarding</code>"  ，
    都是指
    <code class="filename">/proc/sys/net/ipv4/conf/enp3s0.200/forwarding</code> 参数。
    </p><p> <code class="filename">sysctl.d/</code>
    中的设置将在系统启动的早期被应用。
    针对网络接口的配置，
    则会在对应的网络接口出现的时候被应用，
    具体说来就是 <code class="filename">net.ipv4.conf.*</code>,
    <code class="filename">net.ipv6.conf.*</code>,
    <code class="filename">net.ipv4.neigh.*</code>,
    <code class="filename">net.ipv6.neigh.*</code> 参数。</p><p>许多 sysctl 参数仅在加载相应的内核模块之后才可用。
    因为内核模块是按需动态加载的
    (例如在插入新硬件或启动网络时)，
    所以在系统启动早期运行的
    <a href="systemd-sysctl.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-sysctl.service</span>(8)</span></a>
    无法设置那些依赖于特定内核模块的参数。
    对于这些参数，
    首选的方法是通过
    <a href="udev.html#"><span class="citerefentry"><span class="refentrytitle">udev</span>(7)</span></a>
    规则来设置，
    次选的方法是将这些模块添加到
    <a href="modules-load.d.html#"><span class="citerefentry"><span class="refentrytitle">modules-load.d</span>(5)</span></a> 中，
    因为 <a href="modules-load.d.html#"><span class="citerefentry"><span class="refentrytitle">modules-load.d</span>(5)</span></a> 中的模块会在运行
    <a href="systemd-sysctl.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-sysctl.service</span>(8)</span></a>
    前被无条件的静态加载(参见"例子"小节)。</p></div><div class="refsection"><a name="confd"></a><h2>配置目录及其优先级</h2><p>配置文件依次从
    <code class="filename">/etc/</code>, <code class="filename">/run/</code>, <code class="filename">/usr/lib/</code>
    目录中读取。
    配置文件的名称必须符合 <code class="filename"><em class="replaceable"><code>filename</code></em>.conf</code> 格式。
    对于不同目录下的同名配置文件，仅以优先级最高的目录中的那一个为准。
    具体说来就是：
    <code class="filename">/etc/</code> 的优先级最高、
    <code class="filename">/run/</code> 的优先级居中、
    <code class="filename">/usr/lib/</code> 的优先级最低。</p><p>软件包应该将自带的配置文件安装在 
    <code class="filename">/usr/lib/</code> 目录中。
    <code class="filename">/etc/</code> 目录仅供系统管理员使用。
    所有的配置文件(无论位于哪个目录中)，
    统一按照文件名的字典顺序处理。
    如果在多个配置文件中设置了同一个选项，
    那么仅以文件名最靠后(字典顺序)的那一个为准。
    为了便于排序，建议给所有配置文件
    都加上两位十进制数字的文件名前缀。</p><p>如果系统管理员想要屏蔽 <code class="filename">/usr/lib/</code> 目录中的某个配置文件，
    那么最佳做法是在 <code class="filename">/etc/</code> 目录中
    创建一个指向 <code class="filename">/dev/null</code> 的同名符号链接，
    即可彻底屏蔽 <code class="filename">/usr/lib/</code> 目录中的同名文件。
    如果软件包自带的某个配置文件位于 initrd 镜像中，
    那么还必须重新生成 initrd 镜像。</p></div><div class="refsect1"><a name="id-1.8"></a><h2 id="例子">例子<a class="headerlink" title="Permalink to this headline" href="sysctl.d.html#%E4%BE%8B%E5%AD%90">¶</a></h2><div class="example"><a name="id-1.8.2"></a><p class="title"><b>例 1. 设置内核YP域名</b></p><div class="example-contents"><p><code class="filename">/etc/sysctl.d/domain-name.conf</code>:
      </p><pre class="programlisting">kernel.domainname=example.com</pre></div></div><br class="example-break"><div class="example"><a name="id-1.8.3"></a><p class="title"><b>例 2. 利用udev规则设置动态内核模块的参数(方法一)</b></p><div class="example-contents"><p><code class="filename">/etc/udev/rules.d/99-bridge.rules</code>:
      </p><pre class="programlisting">ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \
      RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/net/bridge"
</pre><p><code class="filename">/etc/sysctl.d/bridge.conf</code>:
      </p><pre class="programlisting">net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
</pre><p>因为此方法在加载模块的同时设置模块的参数，
      所以仅在加载 <code class="filename">br_netfilter</code>
      模块之后才能过滤桥接包，
      若不想过滤桥接包，
      只要不加载 <code class="filename">br_netfilter</code> 模块即可。</p></div></div><br class="example-break"><div class="example"><a name="id-1.8.4"></a><p class="title"><b>例 3. 利用 modules-load.d 目录设置动态内核模块的参数(方法二)</b></p><div class="example-contents"><p><code class="filename">/etc/modules-load.d/bridge.conf</code>:
      </p><pre class="programlisting">br_netfilter</pre><p><code class="filename">/etc/sysctl.d/bridge.conf</code>:
      </p><pre class="programlisting">net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
</pre><p>因为此方法总是无条件的加载
      <code class="filename">br_netfilter</code> 模块，
      并且总是无条件的设置模块的参数，
      所以总是无条件的过滤桥接包，若不想过滤桥接包，
      必须主动卸载 <code class="filename">br_netfilter</code> 模块。</p></div></div><br class="example-break"></div><div class="refsect1"><a name="id-1.9"></a><h2 id="参见">参见<a class="headerlink" title="Permalink to this headline" href="sysctl.d.html#%E5%8F%82%E8%A7%81">¶</a></h2><p>
      <a href="systemd.html#"><span class="citerefentry"><span class="refentrytitle">systemd</span>(1)</span></a>,
      <a href="systemd-sysctl.service.html#"><span class="citerefentry"><span class="refentrytitle">systemd-sysctl.service</span>(8)</span></a>,
      <a href="systemd-delta.html#"><span class="citerefentry"><span class="refentrytitle">systemd-delta</span>(1)</span></a>,
      <a class="ulink" href="http://www.jinbuguo.com/man/sysctl.html" target="_top">sysctl(8)</a>,
      <a href="http://man7.org/linux/man-pages/man5/sysctl.conf.5.html"><span class="citerefentry"><span class="refentrytitle">sysctl.conf</span>(5)</span></a>,
      <a href="http://man7.org/linux/man-pages/man8/modprobe.8.html"><span class="citerefentry"><span class="refentrytitle">modprobe</span>(8)</span></a>
    </p></div></div></body></html>
